package itheima04;


import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;

/*
    java.io.InputStreamReader类:  是字节流通向字符流的桥梁       是一个字符输入流    以字符的方式读取内容
	    使用方式: InputStreamReader + 指定编码表
	    如果不指定编码表: 平台默认编码表 FileReader的功能
	    常用方法:
	        InputStreamReader类 是Reader的子类,Reader有的方法,它都有
        构造方法:
            public InputStreamReader(InputStream in, String charsetName)
                参数:
                    InputStream in: 字节输入流抽象父类,传递子类FileInputStream类的对象
                    String charsetName: 编码表     常用编码表   GBK/UTF-8
        使用步骤:
            1.创建字节输入流InputStream类的子类FileInputStream类的对象fis,绑定源文件
            2.创建InputStreamReader类对象isr,传递fis,指定编码表
            3.InputStreamReader类对象isr调用read方法,读取文件内容
            4.关闭流释放资源
 */
public class Demo04InputStreamReader {
    public static void main(String[] args) throws IOException {
        readUtf8File();
    }
    //读取utf-8文件
    private static void readUtf8File()  throws IOException{
        //1.创建字节输入流InputStream类的子类FileInputStream类的对象fis,绑定源文件
        //2.创建InputStreamReader类对象isr,传递fis,指定编码表
        InputStreamReader isr = new InputStreamReader(new FileInputStream("day12\\utf8file.txt"),"UTF-8");

        //3.InputStreamReader类对象isr调用read方法,读取文件内容
        int len = 0;
        char[] chs = new char[1024];
        while((len = isr.read(chs))!=-1) {
            System.out.println(new String(chs,0,len));
        }
           readGbkFile();
        //4.关闭流释放资源
        isr.close();

    }

    //读取GBK文件
    private static void readGbkFile() throws IOException{
        //1.创建字节输入流InputStream类的子类FileInputStream类的对象fis,绑定源文件
        //FileInputStream fis = new FileInputStream("day12\\gbkfile.txt");

        //2.创建InputStreamReader类对象isr,传递fis,指定编码表
        //InputStreamReader isr = new InputStreamReader(fis, "GBK");

        InputStreamReader isr = new InputStreamReader(new FileInputStream("day12\\gbkfile.txt"), "GBK");
        //3.InputStreamReader类对象isr调用read方法,读取文件内容
        //单字符循环读取
        int ch = 0;
        while((ch = isr.read())!=-1) {
            System.out.print((char)ch);
        }
        //4.关闭流释放资源
        isr.close();
    }
}
